package main

import (
	"fmt"
)

func main() {

	//定义一个具有10个数字的数组
	nums := [10]int{1, 2, 3, 4}
	for i := 0; i < len(nums); i++ {
		fmt.Println("nums[", i, "]=", nums[i])
	}
	fmt.Println("----------------------------------------")
	nums1 := nums[1:4]
	for i := 0; i < len(nums1); i++ {
		fmt.Println(nums1[i])
	}
	fmt.Println("----------------------------------------")
	var id_name map[int]string
	id_name = make(map[int]string, 10)
	id_name[0] = "sam"
	id_name[1] = "amy"

	for key, value := range id_name {
		fmt.Println("key:", key, "value:", value)
	}
	fmt.Println("----------------------------------------")

	//如何确定一个key是否存在map中
	/**
	在map中不存在访问越界的问题，它认为所有的key都是有效的，所以访问一个不存在的key不会崩溃，而是返回该类型的零值
	零值： Boolean：false  数字：0  string：nil
	*/
	name9 := id_name[9]
	fmt.Println("name9:", name9)

	/**
	无法通过判断value值来判断key是否存在，因此我们需要一个能够校验key是否存在的方式
	*/
	value, ok := id_name[1] //如果id=1是存在的，那么value就是key=1对应值，ok返回true，反之返回零值（false）
	if ok {
		fmt.Println("id=1这个key是存在的,value为", value)
	}

	//删除 map中的元素
	/**
	使用自由函数delete来删除指定的key
	*/
	fmt.Println("删除前：", id_name)
	delete(id_name, 1)
	delete(id_name, 100)
	fmt.Println("删除后：", id_name)
}
